import { createStore } from 'vuex'


// 只有mutations，才能修改数据
// actions, 用于处理异步
// getters 用于对state的数据进行预处理和包装
export default createStore({
  state: {
    count: 0
  },
  getters: {
    showNum(state) {
      return '当前最新的数量 【' + state.count + '】'
    }
  },
  mutations: {
    add(state) {
      state.count++
    },
    addN(state, step) {
      state.count += step
    },
    sub(state) {
      state.count--
    },
    subN(state, step) {
      state.count -= step
    },
  },
  actions: {
    addAsync(context) {
      setTimeout(()=> {
        context.commit('add')
      }, 2000)
    },
    addNAsync(context, step) {
      setTimeout(()=>{
        context.commit('addN', step)
      }, 2000)
    },
    subAsync(context) {
      setTimeout(()=> {
        context.commit('sub')
      }, 2000)
    },
    subNAsync(context, step) {
      setTimeout(()=> {
        context.commit('subN', step)
      }, 2000)
    },
  },
  modules: {
  }
})
